/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Logistica.Controlador;

import CharliesCookies.MainController;
import com.dp1.pucp.Modelo.Clases.*;
import com.dp1.pucp.Logistica.DAO.*;
import com.dp1.pucp.Logistica.Vista.*;
import com.dp1.pucp.Seguridad.DAO.LogDAO;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

/**
 *
 * @author ubuntu64
 */
public class MantPedidoCompraControlador {
    private TipoProductoDAO m;
    private MantPedidoCompraGUI2 mantPedidoCompraView;
    private ArrayList<Pedidocompra> lstPedidoCompra;
    private ArrayList<String> lstTipo;
    private final static int ESTADO_ACTIVO=1;
    private final static int ESTADO_INACTIVO=0;
        
    public MantPedidoCompraControlador(TipoProductoDAO dao, MantPedidoCompraGUI2 v){
        m = dao;
        mantPedidoCompraView = v;
        llenarTipoEstado();
        llenarTipoCombo();
        mantPedidoCompraView.addBuscarListener(new listarAlmacenes() );
        mantPedidoCompraView.addNuevoListener(new crearPedidoCompraListener(this));
        mantPedidoCompraView.addLimpiarListener(new limpiarListener());
        mantPedidoCompraView.addInactivarListener(new InactivarListener());
        mantPedidoCompraView.addVerDetalleListener(new verDetalleListener(this));
        
    }
    
    private void llenarTipoCombo(){
        lstTipo = m.listarMotivo();
        mantPedidoCompraView.llenaComboTipo(lstTipo);
    } 
    
     private void llenarTipoEstado(){
        lstTipo = m.listarEstadoPedidoCompra();
        mantPedidoCompraView.llenaComboEstado(lstTipo);
    } 

    public void listarResultados(){
        
        //Por motivos
        String Motivo="";
        int idMotivo=mantPedidoCompraView.getMotivo();
        if(idMotivo==0){
            Motivo="Seleccionar";
        }
        if(idMotivo==1){
            Motivo="Pedido Cliente";
        }
        if(idMotivo==2){
            Motivo="Politicas";
        }
        
        
        //Por estados
        String Estado="";
        int idEstado=mantPedidoCompraView.getEstado();
        //0 es seleccionar
        
        if(idEstado!=0)
        idEstado=idEstado-1;
        
        lstPedidoCompra = m.listarPedidoCompra(Motivo,idEstado);

        mantPedidoCompraView.llenaGrilla(lstPedidoCompra);        
    }
    
    class listarAlmacenes implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e) {
            listarResultados();
        }
    } 
    
    class crearPedidoCompraListener implements ActionListener {
        
        private MantPedidoCompraControlador buc;
        public crearPedidoCompraListener(MantPedidoCompraControlador buscarusr){
            buc=buscarusr;
        }
                
        @Override
        public void actionPerformed(ActionEvent e) {
            MantLineaPedidoCompraGUI p = new MantLineaPedidoCompraGUI(mantPedidoCompraView.getPadre(), true);
            MantLineaPedidoCompraControlador c = new MantLineaPedidoCompraControlador (m,p,buc,null,null,"",null);
            LogDAO.insertarLog(MainController.usuario, "Ingresar Agregar Pedido de Compra");
            p.setVisible(true);
        }
    }    
    
    
     class verDetalleListener implements ActionListener {
        
        private MantPedidoCompraControlador buc;
        public verDetalleListener(MantPedidoCompraControlador buscarusr){
            buc=buscarusr;
        }
                
        @Override
        public void actionPerformed(ActionEvent e) {
            int sel=mantPedidoCompraView.getFilaSel();
            if(sel!=-1){
                Pedidocompra u = lstPedidoCompra.get(sel);
            
                DetallePedidoCompraGUI p = new DetallePedidoCompraGUI(mantPedidoCompraView.getPadre(), true);
            
                DetallePedidoControlador c = new DetallePedidoControlador (m,p,buc,u);
                p.setVisible(true);
            }
        }
    }  
        
    class limpiarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            mantPedidoCompraView.LimpiarDatos();
        }        
    }    
    
    class InactivarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            int sel=mantPedidoCompraView.getFilaSel();
            if (sel!=-1){
//                if (mantPedidoCompraView.solicitarConfirmacion("¿Desea inactivar este usuario?")==0){
                      Pedidocompra u = lstPedidoCompra.get(sel); 
                      u.setEstado(ESTADO_INACTIVO);
                      m.guardarPedido(u);
                      LogDAO.insertarLog(MainController.usuario, "Eliminar Pedido de Compra");
//                    mantPedidoCompraView.mostrarAviso("Se inactivó el usuario con éxito");
                      listarResultados();
                }
//            }
//            else{
//                mantPedidoCompraView.mostrarError("Debe seleccionar un usuario");
//            }
        }        
    }       
    
    class activarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            int sel=mantPedidoCompraView.getFilaSel();
                if (sel!=-1){
                //if (mantPedidoCompraView.solicitarConfirmacion("¿Desea reactivar este usuario?")==0){                
                    Pedidocompra u = lstPedidoCompra.get(sel);
                    u.setEstado(ESTADO_ACTIVO);
                    //m.guardarPedidoComprau);
                    //mantPedidoCompraView.mostrarAviso("Se reactivó el usuario con éxito");
                    listarResultados();
                }
            }
            //else{
             //mantPedidoCompraView.mostrarError("Debe seleccionar un usuario");   
            //}               
        //}        
    }
}
